package com.sto.stoapp.db;

import android.content.Context;
import android.content.SharedPreferences;

import com.sto.stoapp.StoConfig;
import com.sto.stoapp.activity.R;
import com.sto.stoapp.db.constant.StoFileConstant;
import com.sto.stoapp.util.Helper;

import java.util.Arrays;
import java.util.List;

/**
 * 文件管理
 *
 * @author mgf
 */
public class StoFilePreference implements StoFileConstant {

    // 文件名
    private static final String FILE_PREFERENCE_NAME = "sto_file";

    private SharedPreferences preferences;

    private static StoFilePreference filePreference;

    private Context context;

    /**
     * 构造函数
     *
     * @param context
     */
    private StoFilePreference(Context context) {
        this.context = context;
        preferences = context.getSharedPreferences(FILE_PREFERENCE_NAME,
                Context.MODE_PRIVATE);
    }

    /**
     * 得到单例化对象
     *
     * @param context
     * @return
     */
    public static StoFilePreference getInstance(Context context) {
        synchronized (FILE_PREFERENCE_NAME) {
            if (filePreference == null) {
                filePreference = new StoFilePreference(context);
            }
            return filePreference;
        }
    }

    /**
     * 蓝牙配置
     *
     * @param mac 蓝牙地址{:::}
     * @author wxf
     */
    public void setBluetoothMacAddress(String mac) {
        preferences.edit().putString(BLUETOOTH_MAC, mac).commit();
    }

    /**
     * 蓝牙配置
     *
     * @return
     * @author wxf
     */
    public String getBluetoothMacAddress() {
        return preferences.getString(BLUETOOTH_MAC, "");
    }

    /**
     * 保存用户类型
     *
     * @param
     */
    public void setUserType(String userType) {
        preferences.edit().putString(STO_USER_TYPE, userType).commit();
    }

    /**
     * 得到用户类型
     *
     * @return
     */
    public String getUserType() {
        return preferences.getString(STO_USER_TYPE, "");
    }

    /**
     * 得到登陆账号工号
     *
     * @return
     */
    public String getUserCode() {
        return preferences.getString(STO_USER_INFO, "");
    }

    /**
     * 保存登陆账号工号
     *
     * @param userInfo
     */
    public void setUserCode(String userInfo) {
        preferences.edit().putString(STO_USER_INFO, userInfo).commit();
    }

    /**
     * 得到登陆账号工号
     *
     * @return
     */
    public String getUserName() {
        return preferences.getString("useName", "");
    }

    /**
     * 保存登陆账号工号
     *
     * @param userInfo
     */
    public void setUserName(String userInfo) {
        preferences.edit().putString("useName", userInfo).commit();
    }

    /**
     * 保存登陆密码信息
     *
     * @param pwdInfo
     */
    public void setPwdInfo(String pwdInfo) {
        preferences.edit().putString(STO_PWD_INFO, pwdInfo).commit();
    }

    /**
     * 得到登陆密码信息
     *
     * @return
     */
    public String getPwdInfo() {
        return preferences.getString(STO_PWD_INFO, "");
    }

    /**
     * 保存网点编号信息
     *
     * @param siteCode
     */
    public void setSiteCode(String siteCode) {
        preferences.edit().putString(STO_SITE_CODE, siteCode).commit();
    }

    /**
     * 得到网点编号信息(默认值暂设000000)
     *
     * @return
     */
    public String getSiteCode() {
        return preferences.getString(STO_SITE_CODE, DEFAULT_SITE_CODE);
    }

    /**
     * 保存网点名称
     *
     * @param siteCode
     */
    public void setSiteName(String siteCode) {
        preferences.edit().putString("site_name", siteCode).commit();
    }

    /**
     * 得到网点名称
     *
     * @return
     */
    public String getSiteName() {
        return preferences.getString("site_name", "");
    }

    /**
     * 保存网点操作属性位
     *
     * @param siteCode
     */
    public void setSiteOrgType(String siteCode) {
        preferences.edit().putString("SiteOrgType", siteCode).commit();
    }

    /**
     * 得到网点操作属性位
     *
     * @return
     */
    public String getSiteOrgType() {
        return preferences.getString("SiteOrgType", "");
    }

    /**
     * 保存网点航空标识
     *
     * @param siteCode
     */
    public void setSiteOrgAirType(String siteCode) {
        preferences.edit().putString("OrgAirType", siteCode).commit();
    }

    /**
     * 得到网点航空标识
     *
     * @return
     */
    public String getSiteOrgAirType() {
        return preferences.getString("OrgAirType", "");
    }

    /**
     * 保存当天第一次登陆属性位
     *
     * @param loginAttribute
     */
    // public void setLoginAttribute(String loginAttribute) {
    // preferences.edit().putString(LOGIN_ATTRIBUTE, loginAttribute).commit();
    // }

    /**
     * 得到当天第一次登陆的属性位
     *
     * @return
     */
    // public String getLoginAttribute() {
    // return preferences.getString(LOGIN_ATTRIBUTE, "");
    // }

    /**
     * 保存登陆时获得的网点名称
     *
     * @param loginSiteName
     */
    // public void setLoginSiteName(String loginSiteName) {
    // preferences.edit().putString(LOGIN_SITE_NAME, loginSiteName).commit();
    // }

    /**
     * 获得登陆时保存的网点名称
     *
     * @return
     */
    // public String getLoginSiteName() {
    // return preferences.getString(LOGIN_SITE_NAME, "");
    // }

    /**
     * 保存登陆时获得的名称
     *
     * @param loginName
     */
    // public void setLoginName(String loginName) {
    // preferences.edit().putString(LOGIN_NAME, loginName).commit();
    // }

    /**
     * 得到登陆时保存的名称
     *
     * @return
     */
    // public String getLoginName() {
    // return preferences.getString(LOGIN_NAME, "");
    // }

    /**
     * 保存登陆时获得的电话号码
     *
     * @param loginTelphone
     */
    // public void setLoginTelphone(String loginTelphone) {
    // preferences.edit().putString(LOGIN_TELPHONE, loginTelphone).commit();
    // }

    /**
     * 得到登陆是保存的电话号码
     *
     * @return
     */
    // public String getLoginTelphone() {
    // return preferences.getString(LOGIN_TELPHONE, "");
    // }

    /**
     * 保存程序角色信息
     *
     * @param programRole
     */
    public void setProgramRoleControl(String programRole) {
        preferences.edit().putString(STO_PROGRAM_ROLE_CONTROL, programRole)
                .commit();
    }

    /**
     * 获得程序角色信息，默认是“自动”
     *
     * @return
     */
    public String getProgramRoleControl() {
        return preferences.getString(STO_PROGRAM_ROLE_CONTROL,
                context.getText(R.string.automatic).toString());
    }

    /**
     * 保存巴抢角色信息
     *
     * @param barRole
     */
    public void setBarRoleControl(String barRole) {
        preferences.edit().putString(STO_BAR_ROLE_CONTROL, barRole).commit();
    }

    /**
     * 获得巴抢角色信息。默认是“不限制”
     *
     * @return
     */
    public String getBarRoleControl() {
        return preferences.getString(STO_BAR_ROLE_CONTROL,
                context.getText(R.string.not_limit).toString());
    }

    /**
     * 保存是否允许选择操作员类
     *
     * @param res
     */
    public void setSelectedOperatorControl(boolean res) {
        preferences.edit().putBoolean(SELECTED_OPERATOR_CONTROL, res).commit();
    }

    /**
     * 获得允许选择操作员类的状态, 默认是否
     *
     * @return
     */
    public boolean getSelectedOperatorControl() {
        return preferences.getBoolean(SELECTED_OPERATOR_CONTROL, true);
    }

    /**
     * 保存是否打开收件管控功能
     *
     * @param res
     */
    public void setReceiveControl(boolean res) {
        preferences.edit().putBoolean(RECEIVE_CONTROL, res).commit();
    }

    /**
     * 获得允许开启收件管控功能, 默认是打开
     *
     * @return
     */
    public boolean getReceiveControl() {
        return preferences.getBoolean(RECEIVE_CONTROL, false);
    }

    /**
     * 保存订单收件功能状态
     *
     * @param res
     */
    public void setOrderFunctionControl(boolean res) {
        preferences.edit().putBoolean(ORDER_FUNCTION_CONTROL, res).commit();
    }

    /**
     * 获得订单收件功能状态，默认是否
     *
     * @return
     */
    public boolean getOrderFunctionControl() {
        return preferences.getBoolean(ORDER_FUNCTION_CONTROL, false);
    }

    /**
     * 保存车辆管理功能状态
     *
     * @param res
     */
    public void setVehicleManagerControl(boolean res) { // 修改默认车辆操作没作用
        preferences.edit().putBoolean(VEHICLE_MANAGER_CONTROL, false).commit();
    }

    /**
     * 获得车辆管理功能状态，默认是否
     *
     * @return
     */
    public boolean getVehicleManagerControl() {
        return preferences.getBoolean(VEHICLE_MANAGER_CONTROL, false);
    }

    /**
     * 保存快件查询功能状态
     *
     * @param res
     */
    public void setExpressSearchControl(boolean res) {
        preferences.edit().putBoolean(EXPRESS_SEARCH_CONTROL, res).commit();
    }

    /**
     * 获得快件查询功能状态，默认是否
     *
     * @return
     */
    public boolean getExpressSearchControl() {
        return preferences.getBoolean(EXPRESS_SEARCH_CONTROL, true);
    }

    /**
     * 保存巴抢编号
     *
     * @param barNumber
     */
    public void setBarCodeNumber(String barNumber) {
        preferences.edit().putString(BARCODE_NUMBER, barNumber).commit();
    }

    /**
     * 获得巴抢编号
     *
     * @return
     */
    public String getBarCodeNumber() {
        return preferences.getString(BARCODE_NUMBER, DEFAULT_SITE_CODE);
    }

    /**
     * 保存提示音开关结果
     *
     * @param res
     */
    public void setPromptSound(boolean res) {
        preferences.edit().putBoolean(PROMPT_SOUND_SWITCH, res).commit();
    }

    /**
     * 获得提示音开关结果
     *
     * @return
     */
    public boolean getPromptSound() {
        return preferences.getBoolean(PROMPT_SOUND_SWITCH, true);
    }

    /**
     * 保存背光开关结果
     *
     * @param res
     */
    public void setLightSwitch(boolean res) {
        preferences.edit().putBoolean(KEY_LIGHT_SWITCH, res).commit();
    }

    /**
     * 获得背光开关结果
     *
     * @return
     */
    public boolean getLightSwitch() {
        return preferences.getBoolean(KEY_LIGHT_SWITCH, true);
    }

    /**
     * 保存扫描音开关结果
     *
     * @param res
     */
    public void setScanSound(boolean res) {
        preferences.edit().putBoolean(SCAN_SOUND_SWITCH, res).commit();
    }

    /**
     * 获得扫描音开关结果
     *
     * @return
     */
    public boolean getScanSound() {
        return preferences.getBoolean(SCAN_SOUND_SWITCH, false);
    }

    /**
     * 保存按键音开关结果
     *
     * @param res
     */
    public void setKeyDownSound(boolean res) {
        preferences.edit().putBoolean(KEYDOWN_SOUND_SWITCH, res).commit();
    }

    /**
     * 获得按键音开关结果
     *
     * @return
     */
    public boolean getKeyDownSound() {
        return preferences.getBoolean(KEYDOWN_SOUND_SWITCH, false);
    }

    /**
     * 保存报警音开关结果
     *
     * @param res
     */
    public void setAlertSound(boolean res) {
        preferences.edit().putBoolean(ALERT_SOUND_SWITCH, res).commit();
    }

    /**
     * 获得报警音开关结果
     *
     * @return
     */
    public boolean getAlertSound() {
        return preferences.getBoolean(ALERT_SOUND_SWITCH, false);
    }

    /**
     * 保存振动音开关结果
     *
     * @param res
     */
    public void setShockSound(boolean res) {
        preferences.edit().putBoolean(SHOCK_SOUND_SWITCH, res).commit();
    }

    /**
     * 获得振动音开关结果
     *
     * @return
     */
    public boolean getShockSound() {
        return preferences.getBoolean(SHOCK_SOUND_SWITCH, false);
    }

    /**
     * 保存设置的自动上传时间
     *
     * @param time
     */
    public void setAutoUploadTime(int time) {
        preferences.edit().putInt(AUTO_UPLOAD_SWITCH, time).commit();
    }

    /**
     * 获取自动上传的时间
     *
     * @return
     */
    public int getAutoUploadTime() {
        return preferences.getInt(AUTO_UPLOAD_SWITCH, 0);
    }

    /**
     * 保存设置自动下载订单时间
     *
     * @param time
     */
    public void setAutoDownloadOrderTime(int time) {
        preferences.edit().putInt(AUTO_DOWNLOAD_ORDER_SWITCH, time).commit();
    }

    /**
     * 获取自动下载订单时间
     *
     * @return
     */
    public int getAutoDownloadOrderTime() {
        return preferences.getInt(AUTO_DOWNLOAD_ORDER_SWITCH, 5);
    }

    // /**
    // * 保存蓝牙开关
    // *
    // * @param res
    // */
    // public void setSelectedBlueControl(boolean res) {
    // preferences.edit().putBoolean(SELECT_BLUE_SWITCH, res).commit();
    // }
    //
    // /**
    // * 获得蓝牙开关, 默认是关
    // *
    // * @return
    // */
    // public boolean getSelectedBlueControl() {
    // return preferences.getBoolean(SELECT_BLUE_SWITCH, false);
    // }

    /**
     * 保存选用秤型号
     *
     * @param res
     */
    public void setSelectedScalesControl(String res) {
        preferences.edit().putString(SELECT_SCALES_SWITCH, res).commit();
    }

    /**
     * 获得选用秤型号
     *
     * @return
     */
    public String getSelectedScalesControl() {
        return preferences.getString(SELECT_SCALES_SWITCH,
                context.getString(R.string.select_empty_type));
    }

    /**
     * 保存选用蓝牙小数精确位
     *
     * @param res
     */
    public void setSelectedDecimalPlacesControl(String res) {
        preferences.edit().putString(SELECT_DECIMAL_PLACES_SWITCH, res)
                .commit();
    }

    /**
     * 获得选用蓝牙小数精确位
     *
     * @return
     */
    public String getSelectedDecimalPlacesControl() {
        return preferences.getString(SELECT_DECIMAL_PLACES_SWITCH,
                context.getString(R.string.decimal_places_two));
    }

    /**
     * 保存数据服务器端口号
     *
     * @param dataPort
     */
    public void setDataServicePort(int dataPort) {
        preferences.edit().putInt(DATA_SERVICE_PORT, dataPort).commit();
    }

    /**
     * 获得数据服务器端口号,默认为4025
     *
     * @return
     */
    public int getDataServicePort() {
        return preferences.getInt(DATA_SERVICE_PORT, 4025);
    }

    /**
     * 保存升级服务器端口号
     *
     * @param upgradePort
     */
    public void setUpgradeServicePort(int upgradePort) {
        preferences.edit().putInt(UPGRADE_SERVICE_PORT, upgradePort).commit();
    }

    /**
     * 获得升级服务器端口号,默认为8090
     *
     * @return
     */
    public int getUpgradeServicePort() {
        return preferences.getInt(UPGRADE_SERVICE_PORT, 8090);
    }

    /**
     * 保存订单服务器端口号
     *
     * @param orderPort
     */
    public void setOrderPort(int orderPort) {
        preferences.edit().putInt(ORDER_SERVICE_PORT, orderPort).commit();
    }

    /**
     * 获得订单服务器端口号,默认为9900
     *
     * @return
     */
    public int getOrderPort() {
        return preferences.getInt(ORDER_SERVICE_PORT, 9900);
    }

    /**
     * 保存服务器IP
     *
     * @param serverIp
     */
    public void setServerIp(String serverIp) {
        preferences.edit().putString(SERVER_ADDRESS_IP, serverIp).commit();
    }

    /**
     * 获得服务器IP 外网http://116.228.73.26:17070/receive/
     * 中山内网http://192.168.1.139:18080/receive/
     *
     * @return
     */
    public String getServerIp() {// "58.246.233.196" // 凯立本地测试122.224.143.206
        return preferences.getString(SERVER_ADDRESS_IP,
                "http://pda.sto.cn:2227/receive/");
    }

    /**
     * 保存服务器IPS
     *
     * @param serverIps
     */
    public void setServerIps(String serverIps) {
        preferences.edit().putString(SERVER_ADDRESS_IPS, serverIps).commit();
    }

    /**
     * 获得服务器IPR
     *
     * @return
     */
    public String getServerIpr() {
        return preferences.getString(SERVER_ADDRESS_IPR, "122.224.143.206");
    }

    /**
     * 保存服务器IPR
     *
     * @param
     */
    public void setServerIpr(String serverIpr) {
        preferences.edit().putString(SERVER_ADDRESS_IPR, serverIpr).commit();
    }

    /**
     * 获得服务器IPS
     *
     * @return
     */
    public String getServerIps() {
        return preferences.getString(SERVER_ADDRESS_IPS,
                "http://pda.sto.cn:2226/app_software/STOAPP/STO.apk");
    }

    /**
     * 获得服务器IPT（不可修改）
     *
     * @return
     */
    public String getServerIpt() {
        return preferences.getString(SERVER_ADDRESS_IPT, "222.66.109.138");
    }

    /**
     * 保存GPS自动上传时间
     *
     * @param gpsTime
     */
    public void setGpsAutoTime(String gpsTime) {
        preferences.edit().putString(GPS_AUTO_TIME, gpsTime).commit();
    }

    /**
     * 获得GPS自动上传时间
     *
     * @return
     */
    public String getGpsAutoTime() {
        return preferences.getString(GPS_AUTO_TIME, "");
    }

    /**
     * 设置gps开关
     */
    public void setGpsSwitch(boolean isOpen) {

        preferences.edit().putBoolean(GPS_SWITCH, isOpen).commit();
    }

    /**
     * 获取gps开关
     */
    public boolean getGpsSwitch() {
        return preferences.getBoolean(GPS_SWITCH, true);
    }

    /**
     * 保存扫描头触发状态：true表示自动，false表示手动
     *
     * @param res
     */
    public void setScanHeaderTrigger(boolean res) {
        preferences.edit().putBoolean(SCAN_HEADER_TRIGGER, res).commit();
    }

    /**
     * 获得扫描头触发状态
     *
     * @return
     */
    public boolean getScanHeaderTrigger() {
        return preferences.getBoolean(SCAN_HEADER_TRIGGER, false);
    }

    /**
     * 保存扫描灯常亮时间
     *
     * @param time
     */
    public void setScanHeaderTime(int time) {
        preferences.edit().putInt(SCAN_HEADER_TIME, time).commit();
    }

    /**
     * 获得扫描灯常亮时间
     *
     * @return
     */
    public int getScanHeaderTime() {
        return preferences.getInt(SCAN_HEADER_TIME, 10);
    }

    /**
     * 保存时间同步状态：true表示成功，false表示失败
     *
     * @param res
     */
    public void setTimeSynch(boolean res) {
        preferences.edit().putBoolean(TIME_SYNCH_STATUS, res).commit();
    }

    /**
     * 获得时间同步状态：true表示成功，false表示失败
     *
     * @return
     */
    public boolean getsetTimeSynch() {
        return preferences.getBoolean(TIME_SYNCH_STATUS, false);
    }

    /**
     * 订单开启操作：true表示已操作，false表示未操作
     *
     * @return
     */
    public boolean getOrderOpenStaus() {
        return preferences.getBoolean(ORDER_OPEN_STATUS, false);
    }

    /**
     * 订单开启操作：true表示已操作，false表示未操作
     *
     * @param res
     */
    public void setOrderOpenStaus(boolean res) {
        preferences.edit().putBoolean(ORDER_OPEN_STATUS, res).commit();
    }

    /**
     * 保存到包预报下载的时间(14位)，航班(8)和偏移量(7) 字符串以 | 隔开
     */
    public void setCastRequestInfo(String info) {
        preferences.edit().putString(CAST_REQUEST_INFO, info).commit();
    }

    /**
     * 获得到包预报下载的时间(14位)，航班(8)和偏移量(7) 字符串以 | 隔开 第一次请求时，默认为七天前
     *
     * @return
     */
    public String getCastRequestInfo() {
        return preferences.getString(CAST_REQUEST_INFO,
                Helper.getBeforeWeekDate() + "|" + "00000000" + "|" + "0000000"
                        + "|");
    }

    /**
     * 保存到包预报的增量更新时间（14位yyyymmddhhmiss）
     *
     * @param time
     * @return
     */
    public void setCastIncTime(String time) {
        preferences.edit().putString(CAST_INC_TIME, time).commit();
    }

    /**
     * 获得到包预报的增量更新时间（14位yyyymmddhhmiss）
     */
    public String getCastIncTime() {
        return preferences.getString(CAST_INC_TIME, Helper.getBeforeWeekDate());
    }

    /**
     * 保存升级授权码
     *
     * @param
     * @return
     */
    public void setAuthorise(String authorise) {
        preferences.edit().putString(AUTHORISE_CODE, authorise).commit();
    }

    /**
     * 获得升级授权码
     */
    public String getAuthorise() {
        return preferences.getString(AUTHORISE_CODE, "");
    }

    /**
     * 设置锁屏开关
     *
     * @param res true/开启 false/关闭
     */
    public void setlockTouchScreen(boolean res) {
        preferences.edit().putBoolean(LOCK_TOUCH_SCREEN, res).commit();
    }

    /**
     * 获得锁屏状态
     *
     * @return
     */
    public boolean getlockTouchScreen() {
        return preferences.getBoolean(LOCK_TOUCH_SCREEN, false);
    }

    /**
     * 设置开机启动
     *
     * @param isStart
     * @author wxf
     */
    public void setBootStrap(boolean isStart) {
        preferences.edit().putBoolean(BOOT_STRAP, isStart).commit();
    }

    /**
     * 设置开机启动
     *
     * @param
     * @author wxf
     */
    public boolean getBootStrap() {
        return preferences.getBoolean(BOOT_STRAP, false);
    }

    /**
     * 清空登陆信息
     */
    public void clearLoginInfo() {
        // setLoginAttribute("");
        setUserCode("");
        setPwdInfo("");
        // setLoginSiteName("");
        // setLoginName("");
        // setLoginTelphone("");
    }

    /**
     * 清空订单及时间同步
     */
    public void clearOderAndTimeSynData() {
        setOrderOpenStaus(false);
        setTimeSynch(false);
    }

    /**
     * 清空订单操作
     */
    public void clearOderData() {
        setOrderOpenStaus(false);
    }

    /**
     * 清空时间同步
     */
    public void clearTimeSynData() {
        setTimeSynch(false);
    }

    /**
     * 删除到包预报信息 将增量时间改成当天0时0分0秒
     */
    public void clearForeCastInfo() {
        setCastRequestInfo(Helper.getTodayForCast() + "|" + "00000000" + "|"
                + "0000000" + "|");
        setCastIncTime(Helper.getTodayForCast());
    }

    /**
     * 清空数据
     */
    public void clearAllData() {
        preferences.edit().clear().commit();
    }

    /**
     * 保存系统锁屏时间
     *
     * @param time
     */
    public void setSystemCloseScreenTime(int time) {
        preferences.edit().putInt(SYSTEM_CLOSE_SCREEN_TIME, time).commit();
    }

    /**
     * 获得系统锁屏时间
     *
     * @return
     */
    public int getSystemCloseScreenTime() {
        return preferences.getInt(SYSTEM_CLOSE_SCREEN_TIME, 180);
    }

    /**
     * 保存下载面单发放时间
     *
     * @param time
     */
    public void setBillCodeIssueTime(String time) {
        preferences.edit().putString(BILLCODE_ISSUE, time).commit();
    }

    /**
     * 获得下载面单发放时间
     *
     * @return
     */
    public String getBillCodeIssueTime() {
        return preferences.getString(BILLCODE_ISSUE, "");
    }

    /**
     * 设置超级管理员标志
     */
    public void setSuperAdministrator(boolean isSuperAdministrator) {
        preferences.edit()
                .putBoolean(SUPER_ADMINISTRATOR, isSuperAdministrator).commit();
    }

    /**
     * 获得超级管理员标志
     */
    public boolean getSuperAdministrator() {
        return preferences.getBoolean(SUPER_ADMINISTRATOR, false);
    }


    /**
     * 设置是否第一次安装
     */
    public void setFirstInstall(boolean isFrist) {
        preferences.edit().putBoolean(IS_FIRST_INSTALL, isFrist).commit();
    }

    /**
     * 获取是否第一次安装
     */
    public boolean getIsFirstInstall() {
        return preferences.getBoolean(IS_FIRST_INSTALL, false);
    }

    /**
     * 设置是否要登录验证
     *
     * @param isNeed
     */
    public void setNeedLogin(boolean isNeed) {
        preferences.edit().putBoolean(IS_NEED_LOGIN, isNeed).commit();
    }

    /**
     * 获得是否需要验证标志
     */
    public boolean getNeedLogin() {
        return preferences.getBoolean(IS_NEED_LOGIN, true);
    }

    public void setOnLineLoginTime(long time) {
        preferences.edit().putLong("OnLineLoginTime", time).commit();
    }

    public long getOnLineLoginTime() {
        return preferences.getLong("OnLineLoginTime", 0l);
    }

    /**
     * 设置唯一吗
     */
    public void setMachineCode(String code) {
        preferences.edit().putString(MACHINE_CODE, code).commit();
    }

    /**
     * 获取唯一吗
     */
    public String getMachineCode() {
        if (StoConfig.NEW_DEBUG)
            return "555555555555555";
        return preferences.getString(MACHINE_CODE, "");
    }

    public void setSessionId(String sessionId) {
        preferences.edit().putString(SESSIONID, sessionId).commit();
    }

    public String getSessionId() {
        return preferences.getString(SESSIONID, "");
    }

    /**
     * 登录角色功能菜单
     *
     * @param roleMenu
     * @author wxf
     */
    public void setRoleMenu(String roleMenu) {
        preferences.edit().putString(ROLE_MENU, roleMenu).commit();
    }

    public String getRoleMenu() {
        return preferences.getString(ROLE_MENU, "");
    }

    /**
     * 设置充电状态 1 充电，0未充电
     */
    public void setBatteryState(String state) {
        preferences.edit().putString(BATTERY_STATE, state).commit();
    }

    /**
     * 获取充电状态
     *
     * @return
     */
    public String getBatteryState() {
        return preferences.getString(BATTERY_STATE, "0");
    }

    /**
     * 设置电量
     */
    public void setBatteryLevel(String level) {
        preferences.edit().putString(BATTERY_LEVEL, level).commit();
    }

    /**
     * 获取电量
     *
     * @return
     */
    public String getBatteryLevel() {
        return preferences.getString(BATTERY_LEVEL, "50");
    }

    public void setPowerOffTime(long time) {
        preferences.edit().putLong("PowerOffTime", time).commit();
    }

    public long getPowerOffTime() {
        return preferences.getLong("PowerOffTime", 0l);
    }

    public void set24Switch(boolean isOpen) {
        preferences.edit().putBoolean("24_hour_switch_open", isOpen).commit();
    }

    public boolean get24Switch() {
        return preferences.getBoolean("24_hour_switch_open", false);
    }

    /**
     * 保存过滤单号字符串
     *
     * @param billList
     */
    public void setBillList(String billList) {
        preferences.edit().putString("billList", billList).commit();
    }
    /**
     * 保存过滤单号字符串
     *
     * @param
     */
    public String getBillList() {
        return preferences.getString("billList", "");
    }

    /**
     * 保存过滤单号更新时间
     * @param time
     */
    public void setBillTime(long time){
        preferences.edit().putLong("billTime", time).commit();
    }

    /**
     * 获取过滤单号更新时间
     * @return
     */
    public long getBillTime(){
        return preferences.getLong("billTime", 0);
    }

    /**
     * 清空过滤列表
     */
    public void cleanBillList() {
        preferences.edit().remove("billList").commit();
    }

    /**
     * 保存代签收人列表
     */
    public void setSignNames(List<String> names){

        String str="";

        for(int i=0;i<names.size();i++){
            str+=names.get(i)+",";
        }

        preferences.edit().putString("sign_names",str).commit();
    }

    public List<String> getSignNames(){

        String listStr = preferences.getString("sign_names",null);
        if(null==listStr){
            return null;
        }

        return Arrays.asList(listStr.split(","));
    }

    /**
     * 清空过滤列表
     */
    public void cleanSignNames() {
        preferences.edit().remove("sign_names").commit();
    }

    /**
     * 保存扫描管控存储时间
     * @param time
     */
    public void setControlsTime(String time){
        preferences.edit().putString("controls_time", time).commit();
    }

    /**
     * 获取扫描管控存储时间
     * @return
     */
    public String getControlsTime(){
        return preferences.getString("controls_time", "");
    }

    /**
     * 保存扫描管控开关
     * @param interceptOnOff
     */
    public void setControlsOnOff(int interceptOnOff){
        preferences.edit().putInt("controls_interceptOnOff",interceptOnOff).commit();
    }

    /**
     * 获取扫描管控开关
     * @return
     */
    public int getControlsOnOff(){
        return preferences.getInt("controls_interceptOnOff",1);
    }

    /**
     * 保存管控规则
     * @param rules
     */
    public void setControlsRules(String rules){
        preferences.edit().putString("controls_rules",rules).commit();
    }

    /**
     * 获取管控规则
     * @return
     */
    public String getControlsRules(){
        return preferences.getString("controls_rules","");
    }

    /**
     * 保存扫描灯常亮时间
     *
     */
    public void setBlueWeight(float weight) {
        preferences.edit().putFloat("blue_weight_setting", weight).commit();
    }

    /**
     * 获得扫描灯常亮时间
     *
     * @return
     */
    public float getBlueWeight() {
        return preferences.getFloat("blue_weight_setting", 50f);
    }

    /**
     * 保存代收货款开关
     * @param val
     */
    public void setPayMentOnOff(int val){
        preferences.edit().putInt("pay_ment_on_off",val).commit();
    }

    /**
     * 获取代收货款开关
     * @return
     */
    public int getPayMentOnOff(){
        return preferences.getInt("pay_ment_on_off",0);//默认为0，关
    }
}